import Response from '../../utils/response.js';
import { psApi } from '../../utils/request.js';
import { timeFilter } from '../../utils/index.js';

// 获取佛山市镇街雷达图列表
export const getList = async (ctx) => {
  try {
    // 创建参数对象
    const params = new URLSearchParams();
    const date = timeFilter(new Date(), 'yyyy-MM-dd')
    const isTotal = ctx.request.body.isTotal;
    
    // 添加默认参数
    params.append('radarType', 'SFS');
    params.append('stime', `${date} 00:00:00`);
    params.append('etime', `${date} 23:59:59`);

    const response = await psApi.post('/api-fssw-yth/awater/metar/findRadarPics', params, {
      headers: {
        token: ctx.headers.token,
        'Content-Type': 'application/x-www-form-urlencoded'
      }
    });
    
    if (response.data) {
        const { code, content } = response.data
        // 确保content和list有默认值
        let list = []
        if (content && content.length) {
          list = [content[0]] || []
        }
        const totalCount = list.length || 0
        
        if (code == 200) {
          const statusCount = {
            '全部': totalCount,
            '正常': 0,
            '数据延迟': 0,
            '数据缺失': 0,
            '延迟1小时': 0,
            '延迟3小时': 0,
            '延迟12小时': 0
          };
          
          const mappedList = list.map(item => {
            const dataMonitorTime = item.tm;

            // 获取当前时间（使用本地时区）
            const now = new Date();
            // 设置状态
            let status;

            try {
              // 尝试解析监测时间，如果解析失败则使用当前时间
              // 检查是否为有效日期
              if (dataMonitorTime === null || dataMonitorTime === '' || dataMonitorTime === undefined) {
                status = '数据缺失';
              } else {
                const monitorTime = dataMonitorTime ? new Date(dataMonitorTime.replace(/-/g, '/')) : new Date();
                // 计算时间差（毫秒）
                const timeDiff = Math.abs(now.getTime() - monitorTime.getTime());

                if (timeDiff <= 60 * 60 * 1000) { // 1小时以内
                  status = '正常';
                }
                if (timeDiff > 60 * 60 * 1000) {
                  status = '延迟1小时';
                }  
                if (timeDiff > 3 * 60 * 60 * 1000) {
                  status = '延迟3小时';
                } 
                if (timeDiff > 12 * 60 * 60 * 1000) { 
                  status = '延迟12小时';
                }
              }
            } catch (error) {
              console.error('解析时间错误:', error);
              status = '数据缺失';
            }

            // 更新状态计数
            statusCount[status] = (statusCount[status] || 0) + 1;
            statusCount['数据延迟'] = statusCount['全部'] - statusCount['正常'] - statusCount['数据缺失']
            
            return {
              ...item,
              status
            };
          });

          const resObj = { statusCount }
                    
          if (isTotal == '0') {
            resObj.list = mappedList
          }

          ctx.body = Response.success(resObj)
        } else {
          ctx.body = Response.error('获取数据失败')
        }
    } else {
      console.error('获取数据失败:');
      ctx.body = Response.error('获取数据失败');
    }
  } catch (err) {
    console.error('请求失败:', err);
    ctx.body = Response.error('获取数据失败')
  }
};